home *** CD-ROM | disk | FTP | other *** search
- /*
- * Defines the basic structure of a big integer
- * and gives basic macro definitions.
- *
- * R. G. Larson
- * 25 June 1985
- */
-
- #define DUMMY_LEN 2 /* dummy number size */
-
- typedef unsigned short BIDIG;
- typedef short sBIDIG;
-
- #define BIBASE 65536 /* number base */
-
- #define dBIBASE 65536.0 /* number base as double */
-
- typedef struct bigint {
- int _bimax; /* number of words alloc for integer */
- int _bilen; /* number of words currently used */
- BIDIG _binum[DUMMY_LEN];
- } BIGINT, *BIGINTP;
-
- #define bisize(P) ((P) -> _bilen)
-
- #define bilt0(n) (((sBIDIG) (n -> _binum[n -> _bilen - 1])) < 0)
-
- #define bieq0(n) ((n -> _bilen == 1) && (n -> _binum[0] == 0))
-
- #define bige0(n) (((sBIDIG) (n -> _binum[n -> _bilen - 1])) >= 0)
-
- #define bile0(n) (bilt0(n) || bieq0(n))
-
- #define bigt0(n) (bige0(n) && !bieq0(n))
-
- #define bine0(n) (!bieq0(n))
-
- #define bigt(P,Q) (bilt(Q,P))
-
- #define bige(P,Q) (!bilt(P,Q))
-
- #define bile(P,Q) (!bilt(Q,P))
-
- #define bine(P,Q) (!bieq(P,Q))
-
- #define bisize(P) (P -> _bimax)
-
- #define biodd(P) ((bool) ((P -> _binum[0]) & ((BIDIG) 1)))
-
- #define bieven(P) (!biodd(P))
-
- #define biabs(Q,P) (bilt0(P) ? bineg(Q,P) : bicopy(Q,P))